package controllers;

import play.*;
import play.data.validation.Required;
import play.db.DB;
import play.mvc.*;
import utils.exceptions.BDException;

import java.util.*;
import java.sql.Date;

import dao.FachadaDAO;

import models.*;


public class VeiculoMBean extends Controller{
	
	public static void portalAdministrador() {
    	render("Application/portalAdministrador.html");
    }
	
	public static void veiculo() {
    	render("Veiculo/Veiculo.html");
    }
	
	public static void inserirVeicuo() {
    	render("Veiculo/cadastroVeiculo.html");
    }
	
	public static void buscarVeiculo() {
		render("Veiculo/buscarVeiculo.html");
	}
	
	public static void editarVeiculo(Veiculo veiculo){
		render("Veiculo/editarVeiculo.html",veiculo);
	}
	
	public static void exibirVeiculo(String placa){		
		try {
			Veiculo veiculo = FachadaDAO.getInstance().buscarVeiculo(placa);
			String retorno = "VEÍCULO DE PLACA " + placa + " ALTERADO COM SUCESSO !";
			render("Veiculo/exibirVeiculo.html",veiculo, retorno);	

		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
	}
	
	public static void actionEditarVeiculo(@Required String marca, @Required String modelo, @Required String placa, @Required String ano){		
		if(validation.hasErrors()) {
			render("Veiculo/editarVeiculo.html");
		}		
		Veiculo veiculo;		
		try {
			veiculo = FachadaDAO.getInstance().buscarVeiculo(placa);
			
			veiculo.setMarca(params.get("marca"));
			veiculo.setModelo(params.get("modelo"));
			veiculo.setPlaca(params.get("placa"));
			veiculo.setAno(Integer.parseInt(params.get("ano")));
			
			FachadaDAO.getInstance().editarVeiculo(veiculo);			
			
			render("Veiculo/exibirVeiculo.html",veiculo);
			
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}		
	}
	
	public static void actionInserirVeiculo(@Required String marca, @Required String modelo, @Required String placa, @Required String ano){
		
		if(validation.hasErrors()) {
			render("Veiculo/cadastroVeiculo.html");
		}
		int _ano = Integer.parseInt(ano);
		
		Veiculo veiculo = new Veiculo();
		veiculo.setMarca(marca);
		veiculo.setModelo(modelo);
		veiculo.setPlaca(placa);
		veiculo.setAno(_ano);		
		
		try {
			FachadaDAO.getInstance().inserirVeiculo(veiculo);		
			String retorno = "VEÍCULO DE PLACA " + veiculo.getPlaca()+ " CADASTRADO COM SUCESSO !";
			render("Veiculo/cadastroVeiculo.html", retorno);
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
	}
		
	public static void actionListarVeiculo() {
    	List<Veiculo> veiculo = new ArrayList<Veiculo>();
		try {
			veiculo = FachadaDAO.getInstance().listarVeiculos();			
			render("Veiculo/listarVeiculo.html", veiculo);
			
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
    }	
	
	public static void actionBuscarVeiculo(String placa) {
		try {
			Veiculo veiculo = FachadaDAO.getInstance().buscarVeiculo(placa);
			render("Veiculo/buscarVeiculo.html",veiculo);
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
	}	

	//remover da tela listarVeiculo.html
	public static void actionRemover1(String placa) {
		try {
			FachadaDAO.getInstance().excluirVeiculo(placa);
			String retorno = "VEÍCULO DE PLACA " + placa + " REMOVIDO COM SUCESSO !";
			render("Veiculo/exibirVeiculo.html", retorno);
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
	}
	
	//remover da tela buscarVeiculo.html
	public static void actionRemover(String placa) {
		try {
			FachadaDAO.getInstance().excluirVeiculo(placa);
			buscarVeiculo();
		} catch (BDException e) {
			Erro erro = e.getErro();
			render("errors/erro.html",erro);
		}
	}

}
